package com.haixiaoke.saas.lock.mapper;

import com.haixiaoke.saas.lock.domain.DeviceLock;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * 设备锁Mapper接口
 *
 * @author panda
 * @date 2025-04-02
 */
@Mapper
public interface DeviceLockMapper {
    /**
     * 查询设备锁
     *
     * @param lockId 设备锁主键
     * @return 设备锁
     */
    DeviceLock selectDeviceLockByLockId(Long lockId);
    DeviceLock selectDeviceLockById(Long lockId);

    /**
     * 查询设备锁列表
     *
     * @param deviceLock 设备锁
     * @return 设备锁集合
     */
    List<DeviceLock> selectDeviceLockList(DeviceLock deviceLock);

    List<DeviceLock> selectLockList(DeviceLock deviceLock);

    /**
     * 新增设备锁
     *
     * @param deviceLock 设备锁
     * @return 结果
     */
    int insertDeviceLock(DeviceLock deviceLock);

    /**
     * 修改设备锁
     *
     * @param deviceLock 设备锁
     * @return 结果
     */
    int updateDeviceLock(DeviceLock deviceLock);

    /**
     * 删除设备锁
     *
     * @param lockId 设备锁主键
     * @return 结果
     */
    int deleteDeviceLockByLockId(Long lockId);

    /**
     * 校验设备锁名称和mac地址是否唯一
     * @param deviceLock
     * @return
     */
    List<Map<String, Object>> checkNameAneMac(DeviceLock deviceLock);

    List<DeviceLock> selectDeviceLockTask();

    int updateBatchDeviceLock(List<DeviceLock> deviceLockList);

    /**
     * 根据型号id查询设备锁数量
     * @param modelId 型号id
     * @return
     */
    int countDeviceLockByModelId(Long modelId);

    @MapKey("onlineStatus")
    Map<String, Map<String, Object>> homePageCountOnlineStatus();

}
